package atack.tesis.kelluntekun.ui.componentes;

import java.io.Serializable;

import atack.tesis.kelluntekun.domain.Carpeta;
import atack.tesis.kelluntekun.enums.GenCaption;

import com.vaadin.ui.Alignment;
import com.vaadin.ui.Button;
import com.vaadin.ui.HorizontalLayout;
import com.vaadin.ui.TextArea;
import com.vaadin.ui.TextField;
import com.vaadin.ui.VerticalLayout;
import com.vaadin.ui.Window;

/**
 * @author marza
 *
 */
public class AddFolder extends Window implements Serializable{
	private static final long serialVersionUID = 1L;
	
	private VerticalLayout vlyMain;
	private HorizontalLayout hlyButtons;
	
	private TextField tfNombreCarpeta;
	private TextArea taDescripcionCarpeta;
	private Button btCrearCarpeta;
	private Button btCancelar;
	
	
	/**
	 * Construye la SubWindows para crear una nueva carpeta.
	 */
	public AddFolder(){
		this.setModal(true);
		this.setHeight("250px");
		this.setWidth("290px");
		this.setModal(true);
		this.setCaption("Crear Carpeta");
		this.setResizable(false);
		vlyMain = new VerticalLayout();
		vlyMain.setSizeFull();
		vlyMain.setSpacing(false);
		vlyMain.setMargin(true);
		
		tfNombreCarpeta=new TextField("Nombre: ");
		tfNombreCarpeta.setImmediate(true);
		tfNombreCarpeta.setNullRepresentation("");
		tfNombreCarpeta.setRequired(true);
		tfNombreCarpeta.setWidth("250px");
		vlyMain.addComponent(tfNombreCarpeta);
		
		taDescripcionCarpeta=new TextArea("Descripción: ");
		taDescripcionCarpeta.setImmediate(true);
		taDescripcionCarpeta.setNullRepresentation("");
		taDescripcionCarpeta.setRows(2);
		taDescripcionCarpeta.setWidth("250px");
		vlyMain.addComponent(taDescripcionCarpeta);
		
		buildButtons();
		vlyMain.addComponent(hlyButtons);
		vlyMain.setComponentAlignment(hlyButtons, Alignment.MIDDLE_RIGHT);
		
		tfNombreCarpeta.focus();
		tfNombreCarpeta.setTabIndex(1);
		taDescripcionCarpeta.setTabIndex(2);
		btCancelar.setTabIndex(3);
		btCrearCarpeta.setTabIndex(4);
		this.setContent(vlyMain);
	}
	
	
	/**
	 * Construye los botones para confirmar y cancelar la creación de carpetas. 
	 */
	private void buildButtons(){
		hlyButtons= new HorizontalLayout();
		hlyButtons.setSpacing(true);
		hlyButtons.setMargin(false);
		
		btCancelar = new Button(GenCaption.CANCELAR);
		btCancelar.setDescription("Cancelar la creación de la nueva carpeta.");
		btCancelar.setWidth("75px");
		hlyButtons.addComponent(btCancelar);
		
		
		btCrearCarpeta= new Button("Crear Carpeta");
		btCrearCarpeta.setDescription("Crear una nueva carpeta");
		btCrearCarpeta.setWidth("115px");
		btCrearCarpeta.setTabIndex(3);
		hlyButtons.addComponent(btCrearCarpeta);
	}

	/**
	 * Retorna el botón destinado a la funcionalidad de crear una nueva carpeta.
	 * @return the btCrearCarpeta
	 */
	public Button getBtCrearCarpeta() {
		return btCrearCarpeta;
	}


	/**
	 * @param btGuardarSnippet the btGuardarSnippet to set
	 */
	public void setBtCrearCarpeta(Button btCrearCarpeta) {
		this.btCrearCarpeta = btCrearCarpeta;
	}
	
	/**
	 * Devuelve una carpeta con los valores ingresados en los campos.
	 */
	public Carpeta getCarpeta(){
		return new Carpeta(tfNombreCarpeta.getValue().toString(), taDescripcionCarpeta.getValue().toString());
	}
	
	/**
	 * Verifica que los valores ingresados en los campos del formulario sean validos.
	 */
	public Boolean isValid(){
		return tfNombreCarpeta.isValid()&&taDescripcionCarpeta.isValid();
	}


	/**
	 * @return the btCancelar
	 */
	public Button getBtCancelar() {
		return btCancelar;
	}


	/**
	 * @param btCancelar the btCancelar to set
	 */
	public void setBtCancelar(Button btCancelar) {
		this.btCancelar = btCancelar;
	}
}
